﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SIGERP_Negocio;
using SIGERP_Entidades;

namespace SIGERP_Presentacion
{
    public partial class frmCiudadActualizar : Form
    {
        private Ciudad _Instancia;

        ErrorProvider CiudaderrPro = new ErrorProvider();
        ErrorProvider CodigoPostalerrPro = new ErrorProvider();
        ErrorProvider PaiserrPro = new ErrorProvider();
        ErrorProvider ProvinciaerrPro = new ErrorProvider();

        public frmCiudadActualizar()
        {
            InitializeComponent();
        }

        public frmCiudadActualizar(Ciudad ciudad)
        {
            InitializeComponent();
            txtIdCiudad.Text = ciudad.ID.ToString();
            txtCiudad.Text = ciudad.Descripcion;
            txtCodigoPostal.Text = ciudad.cod_postal.ToString();
            cmbPais.Items.Add(ciudad.provincia.pais);
            cmbProvincia.Items.Add(ciudad.provincia);
            cmbPais.SelectedIndex = 0;
            cmbProvincia.SelectedIndex = 0;
        }

        private bool esNumerico()
        {
            bool rta = false;
            try
            {
                Double aux = Convert.ToDouble(txtCodigoPostal.Text);
            }
            catch (Exception)
            {
                rta = true;
            }
            return rta;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void cmbProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmbProvincia.Refresh();
            List<Provincia> provincias = Provincias.GetAllProvinciasPorPais((Pais)cmbPais.SelectedItem);
            foreach (Provincia p in provincias)
            {
                cmbProvincia.Items.Add(p);
            }
            if (cmbProvincia.Items.Count > 0)
                cmbProvincia.SelectedIndex = 0;
        }

        private void frmCiudadActualizar_Load(object sender, EventArgs e)
        {

        }

        private void cmbPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<Pais> paises = Paises.GetAll();
            foreach (Pais p in paises)
            {
                cmbPais.Items.Add(p);
            }
            if (cmbPais.Items.Count > 0)
                cmbPais.SelectedIndex = 0;
        }

        private void btnCancelar_Click_1(object sender, EventArgs e)
        {
            Close();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {

            bool flag1 = false;
            bool flag2 = false;
            bool flag3 = false;
            bool flag4 = false;
            bool flag5 = false;

            CiudaderrPro.SetError(txtCiudad, "");
            CiudaderrPro.BlinkRate = 0;
            CodigoPostalerrPro.SetError(txtCodigoPostal, "");
            CodigoPostalerrPro.BlinkRate = 0;
            PaiserrPro.SetError(cmbPais, "");
            PaiserrPro.BlinkRate = 0;
            ProvinciaerrPro.SetError(cmbProvincia, "");
            ProvinciaerrPro.BlinkRate = 0;

            // Validar que los campos obligatorios no esten vacio
            if (txtCiudad.Text.Length == 0)
            { CiudaderrPro.SetError(txtCiudad, "Debe ingresar el nombre de la ciudad."); }
            else
            { flag1 = true; }

            if (txtCodigoPostal.Text.Length != 0)
            {
                if (esNumerico())
                { CodigoPostalerrPro.SetError(txtCodigoPostal, "Tiene que ser numerico"); }
                else
                { flag3 = true; }
            }

            // Validar si se selecciono una Pais
            if (cmbPais.SelectedItem == null)
            { PaiserrPro.SetError(cmbPais, "Debe seleccionar un pais."); }
            else
            { flag4 = true; }

            // Validar si se selecciono una Provincia
            if (cmbProvincia.SelectedItem == null)
            { ProvinciaerrPro.SetError(cmbProvincia, "Debe seleccionar una provincia."); }
            else
            { flag5 = true; }

            if ((flag1 == true) & (flag2 == true) & (flag3 == true) & (flag4 == true) & (flag5 == true))
            {

                Ciudades ciudades = new Ciudades();
                Ciudad ciudad = new Ciudad();
                ciudad.ID = Convert.ToInt32(txtIdCiudad.Text);//_Instancia.ID;  
                ciudad.Descripcion = txtCiudad.Text;
                Ciudades.Actualizar(ciudad);
                DialogResult = DialogResult.OK;
                Close();
            }
        }

        private void txtCodigoPostal_Validating(object sender, CancelEventArgs e)
        {
            TextBox objTxtBox = (TextBox)sender;
            try
            {
                Double aux = Convert.ToDouble(txtCodigoPostal.Text);
            }
            catch (Exception)
            {
                e.Cancel = true;
                objTxtBox.SelectAll();
                ErrorProvider errPro = new ErrorProvider();
                errPro.SetError(objTxtBox, "Tiene que ser numerico");
            }
        }
    }
}
